home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / trueSpace 7.6 / tS761B8Std.exe / {app} / Scripts / D3D / RsD3DShadowMapRT.fx < prev    next >
Text File  |  2008-06-10  |  2KB  |  76 lines

  1. uniform float4x4 mToClip    : D3_MATRIX_TO_CLIP;
  2.  
  3. struct VS_MATSHADOW_IN {
  4.     float4 vPosition : POSITION; //position in object space
  5. };
  6.  
  7. typedef struct {
  8.     float4 vPosition : POSITION;
  9.     float4 vPosition2: TEXCOORD0;
  10. } VS_MATSHADOW_OUT;
  11.  
  12. VS_MATSHADOW_OUT VS_CMaterialShadowBuffer(in VS_MATSHADOW_IN input)
  13. {
  14.     VS_MATSHADOW_OUT output;
  15.     output.vPosition = mul(input.vPosition, mToClip); //vertex clip position
  16.     output.vPosition2 = output.vPosition;
  17.     output.vPosition2.xy = output.vPosition2.zw;
  18.     return output;
  19. }
  20.  
  21. float4 PS_CMaterialShadowBuffer(uniform bool bIsProjective, in VS_MATSHADOW_OUT input) : COLOR
  22. {
  23.     float fRetVal; 
  24.     if (bIsProjective)
  25.         fRetVal = input.vPosition2.x / input.vPosition2.y;
  26.     else 
  27.         fRetVal = input.vPosition2.x / input.vPosition2.y;
  28.     float4 vRet;
  29.     vRet.x = fRetVal;
  30.     vRet.y = frac(fRetVal * 256.0f);
  31.     vRet.z = frac(fRetVal * 256.0f * 256.0f);
  32. //    vRet.w = 1.0f / 256.0f;      //the depth bias
  33.     vRet.w = 0.0f;      //the depth bias
  34.     return vRet;
  35. }
  36.  
  37. vertexshader VS_CMaterialShadowBuffer20 = compile vs_2_0 VS_CMaterialShadowBuffer();
  38.  
  39. pixelshader PS_CMaterialShadowBuffer20 = compile ps_2_0 PS_CMaterialShadowBuffer(true);
  40.  
  41. pixelshader PS_CMaterialShadowBuffer20Dir = compile ps_2_0 PS_CMaterialShadowBuffer(false);
  42.  
  43. technique T_ShadowMapProjective {
  44.     pass P0
  45.     {
  46.         VertexShader = (VS_CMaterialShadowBuffer20);
  47.         PixelShader = (PS_CMaterialShadowBuffer20);
  48.  
  49.         AlphaBlendEnable = false;
  50.  
  51.         ZEnable = true;
  52.         ZFunc = LESSEQUAL;
  53.         ZWriteEnable = true;
  54.  
  55.         Cullmode = CW;
  56. //        Cullmode = CCW;
  57.     }
  58. }
  59.  
  60. technique T_ShadowMapDirectional {
  61.     pass P0
  62.     {
  63.         VertexShader = (VS_CMaterialShadowBuffer20);
  64.         PixelShader = (PS_CMaterialShadowBuffer20Dir);
  65.  
  66.         AlphaBlendEnable = false;
  67.  
  68.         ZEnable = true;
  69.         ZFunc = LESSEQUAL;
  70.         ZWriteEnable = true;
  71.  
  72.         Cullmode = CW;
  73. //        Cullmode = CCW;
  74.     }
  75. }
  76.